<html>
<body>

<h3>函数功能</h3>GetDIBits函数检取指定位图的信息，并将其以指定格式复制到一个缓冲区中。<br>
<h3>函数原型</h3>int GetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, LPVOID lpvBits, LPBITMAPINFO lpbi, UINT uUsage)；<br>
<h3>参数</h3>
hdc：设备环境句柄。<br>
hbmp：位图句柄。<br>
uStartScan：指定检索的第一个扫描线。<br>
cScanLines：指定检索的扫描线数。<br>
lpvBits：指向用来检索位图数据的缓冲区的指针。如果此参数为NULL，那么函数将把位图的维数与格式传递给lpbi参数指向的BITMAPINFO结构。<br>
lpbi：指向一个BITMAPINFO结构的指外，此结构确定了设备无在位图的数据格式。<br>
uUsage：指定BITMAPINFO结构的bmiColors成员的格式。它必须为下列取值：<br>
DIB_PAL_COLORS：颜色表由指向当前逻辑调色板的16位索引值数组构成。<br>
DIB_RGB_COLORS：颜色表由红、绿、蓝（RGB）三个直接值构成。<br>
<h3>返回值</h3>如果lpvBits参数非空，并且函数调用成功，那么返回值为从位图复制的扫描线数。<br>
Windows 95和Windows 98：如果lpvBits参数为NULL并且GetDIBits成功地填充了BITMAPINFO结构，那么返回值为位图中总共的扫描线数。<br>
Windows NT：如果lpvBits参数为NULL并且GetDIBits成功地填充了BITMAPINFO结构，那么返回值为非0。如果函数执行失败，那么将返回0值。Windows NT：若想获得更多错误信息，请调用callGetLastError函数。<br>
注释：如果所需要的DIB格式与其内部格式相匹配，那么位图的RGB值将被复制。如果不匹配，那么将合成一个颜色表。下表描述了针对每一种颜色格式所合成的颜色表。<br>
1_BPP：颜色表中仅包含黑白表项。<br>
4_BPP：颜色表由标准VGA定义的颜色组合而成。<br>
8_BPP：颜色表由GDI定义的256色组合而成。<br>
24_BPP：不返回颜色表。<br>
如果lpvBits参数为一个有效指针，那么位图信息头结构的前6个成员必须初始化为DIB的大小和格式。<br>
注意：位图信息头结构可为以下几种格式：<br>
操作系统位图信息头结构(Operating System Bitmap Information Header)<br>
Windows NT 3.51及早期的BITMAPINFOHEADER<br>
Windows NT 4.0及Windows 95中的BITMAPV4HEADER<br>
Windows NT 5.0及Windows 98中的BITMAPV5HEADER<br>
通过将高度设为正数来指定一个自下而上的DIB，而自上而下的DIB则通过设置一个负的高度值来指定。位图的颜色表将附加在BITMAPINFO结构的后面。<br>
如果lpvBits为NULL，那么GetDIBits将检查lpbi所指向的第一个结构的第一个成员。这一成员必须指定BITMAPCOREHEADER结构或位图信息头结构的字节数。函数将通过指定的大小来确定剩余成员如何被初始化。<br>
如果lpvBits为NULL，并且BITMAPINFO结构的bit count成员初始化为0，那么GetDIBits将不填充BITMAPCOREHEADER结构或位图信息头结构的颜色表部分。这一技术可用来查询位图属性。<br>
应用程序调用这个函数时必须将hbmp参数所标识的位图选择到一个设备环境中。<br>
自下而上DIB的原点为位图的左下角，自上而下DIB的原点为其左上角。<br>
<h3>速查</h3>Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；头文件：wingdi.h；库文件：gdi32.lib。<br>

</body>
</html>
